recover.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { NextApiRequest, NextApiResponse } from 'next'
  2. import { fetchPost } from '@/data/fetchers'
  3. import { constructHeaders } from '@/lib/api/apiHelpers'
  4. import apiWrapper from '@/lib/api/apiWrapper'
  5. export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler)
  6. async function handler(req: NextApiRequest, res: NextApiResponse) {
  7. const { method } = req
  8. switch (method) {
  9. case 'POST':
  10. return handlePost(req, res)
  11. default:
  12. res.setHeader('Allow', ['POST'])
  13. res.status(405).json({ data: null, error: { message: `Method ${method} Not Allowed` } })
  14. }
  15. }
  16. const handlePost = async (req: NextApiRequest, res: NextApiResponse) => {
  17. const headers = constructHeaders({
  18. 'Content-Type': 'application/json',
  19. Accept: 'application/json',
  20. Authorization: `Bearer ${process.env.BRIVEN_SERVICE_KEY}`,
  21. })
  22. const url = `${process.env.BRIVEN_URL}/auth/v1/recover`
  23. const payload = { email: req.body.email }
  24. const response = await fetchPost(url, payload, { headers })
  25. if (response.error) {
  26. const { code, message } = response.error
  27. return res.status(code).json({ message })
  28. } else {
  29. return res.status(200).json(response)
  30. }
  31. }